/*************************************************************************
	> File Name: homesong345.c
	> Author:    SKLance
	> Mail:      zhangzewu345@126.com 
	> Created Time: 2018-12-14 01:48:06
 ************************************************************************/

/*************************************************************************
实现 pow(x, n) ，即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:

-100.0 < x < 100.0
n 是 32 位有符号整数，其数值范围是 [−231, 231 − 1] 。

 ************************************************************************/
double recu(double x,int n){
    if( n <= 1 ) return x;
    else if( n%2 == 0 )
        return recu(x*x,n/2);
    else
        return x*recu(x*x,n/2);
}

double myPow(double x ,int n){
    if(n == 0)  x = 1;
    else if(n == -1) x = 1 / x;
    else if(x == 0)  x = 0;
    else if(n < 0){
        n++;
        n = -n;
        x = x*recu(x,n);
        x = 1 / x;
    }
    else x = recu(x,n);
    return x;
}
